﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using prjKQXS_DLL;
using prjKQXS_DLL.Danh_muc;
using prjKQXS_DLL.Hop_dong;

namespace prjKQXS_UI.View
{
    public partial class frmChuyen : XtraForm
    {
        string MaDL = "";
        string tendl = "";
        string madv = "";
        string DMCanBoID = "";
        int HopDongID;

        #region form EVENT =======================================================================
        public frmChuyen(string madl, string tendl, string DMCanBoID, int HopDongID)
        {
            InitializeComponent();

            this.MaDL = madl;
            this.tendl = tendl;
            this.madv = madl.Substring(0, 1);
            this.DMCanBoID = DMCanBoID;
            this.HopDongID = HopDongID;
        }

        private void frmChuyen_Load(object sender, EventArgs e)
        {
            loadData();
        }
        #endregion form EVENT ====================================================================


        #region Control ==========================================================================
        private void btnChuyen_Click(object sender, EventArgs e)
        {
            string MaDLMoi = txtMaDLMoi.Text.Trim();

            if (MaDL_isValid(MaDLMoi))
            {
                clsChuyenDL cls = new clsChuyenDL();
                cls.OnAction += new clsChuyenDL.OnActionHandler(cls_OnAction);
                cls.OnError += new clsChuyenDL.OnErrorHandler(cls_OnError);

                if (!clsChuyenDL.checkNgay(DateTime.Now.Date, HopDongID))    //Nếu vào ngày hiện tại, HopDongID đã xảy ra việc chuyển
                {
                    XtraMessageBox.Show("Cùng một hợp đồng không được chuyển 2 lần trong cùng 1 ngày.", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else if (cls.Insert(HopDongID, (int)lueCanBo.GetColumnValue("ID"), MaDLMoi) == 0)
                {
                    XtraMessageBox.Show("Chưa chuyển được.", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    clsCommon.MsgBox("Chuyển thành công!", 1);
                }

                this.Close();
            }
        }
        #endregion Control =======================================================================


        #region Sub and Func =====================================================================
        #region cls event --------------------------------------------
        private void cls_OnAction(SqlException e)
        {
            cls_OnError(e);
        }

        private void cls_OnError(Exception e)
        {
            XtraMessageBox.Show("Một lỗi chưa được xử lý đã xảy ra. Chi tiết lỗi: \n" + e.Message, 
                "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.Close();
        }
        #endregion ---------------------------------------------------------

        private void loadData()
        {
            txtMaDL.Text = MaDL;
            txtTenDL.Text = tendl;

            DataTable dt = clsCommon.load_lueCanBo(Convert.ToChar(madv), "and ID <> " + DMCanBoID);
            dt.Rows.RemoveAt(0);
            lueCanBo.Properties.DataSource = dt;
            if (dt.Rows.Count > 0)
            {
                lueCanBo.ItemIndex = 0;
                sbtnChuyen.Enabled = true;
            }
        }

        private bool MaDL_isValid(string MaDL)
        {
            bool ok = true;

            //KIỂM TRA MÃ ĐẠI LÝ =============================================================
            string msg = "";
            Regex regexMaDL = new Regex(@"^(\d)(\d|[A-Z])(\d){2,4}$"); //Bắt đầu bằng một ký số + một ký tự hoặc ký số + hai đến 4 ký số
            if (MaDL == "")    //Kiểm tra rỗng
            {
                ok = false;
                msg = "MÃ ĐẠI LÝ không được để trống.";
            }
            else if (!regexMaDL.IsMatch(MaDL))  //Kiểm tra định dạng
            {
                ok = false;
                msg = "MÃ ĐẠI LÝ phải bắt đầu bằng mã cán bộ tương ứng + 2 đến 4 chữ số";
            }
            else if (MaDL.Substring(0, 2) != lueCanBo.GetColumnValue("Ma_DT").ToString().Trim()) //Kiểm tra xem mã đại lý có bắt đầu bằng mã cán bộ hay không
            {
                ok = false;
                msg = "MÃ ĐẠI LÝ phải bắt đầu bằng mã cán bộ tương ứng";
            }
            else if (clsChuyenDL.checkMaDL(MaDL, HopDongID) == false)
            {
                ok = false;
                msg = "MÃ ĐẠI LÝ bị trùng với một đại lý đang hoạt động. Vui lòng chọn mã khác";
            }
            else if (clsHopDong.checkMaDL(MaDL) == 2)
            {
                ok = false;
                msg = "MÃ ĐẠI LÝ bị trùng với một đại lý đã thanh lý năm nay. Vui lòng chọn mã khác";
            }

            if (!ok) XtraMessageBox.Show(msg, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            return ok;
        }
        #endregion Sub and Func ==================================================================
    }
}